#ifndef CONTROL_INTERFACE_H_
#define CONTROL_INTERFACE_H_

#include <iostream>
#include <memory>
#include <vector>

/**
 * @brief 控制器接口类
 *
 * 该类定义了控制器的基本接口，包括创建控制器实例和发送速度指令的方法
 * 使用了工厂模式来创建控制器的实例，以便于未来扩展和替换不同的控制器实现
 */
class ControllerInterface {
public:
    /**
     * @brief 创建控制器实例的静态方法
     *
     * 该方法用于生成ControllerInterface的实例它使用了工厂模式，允许在不修改现有代码的情况下引入新的控制器实现
     *
     * @return std::unique_ptr<ControllerInterface> 控制器接口的智能指针
     */

    static std::unique_ptr<ControllerInterface> create();
    /**
     * @brief 发送速度指令的纯虚函数
     *
     * 该方法需要在派生类中实现，用于向机器人或模拟器发送速度指令
     * 它接受线速度和角速度作为参数，分别表示机器人的平移和旋转速度
     *
     * @param linear_velocity 机器人线速度的三维向量
     * @param angular_velocity 机器人角速度的三维向量
     */
    virtual void sendVelocity(float linear_velocity[3], float angular_velocity[3]) = 0;

    virtual std::pair<uint64_t, std::vector<float>> getOdometry() = 0;
};

#endif